import {setStorage, getStorage, removeStorage} from "@/util/auth";
import {login as loginApi,getUserInfo} from "@/api/user.js";
import Vue from "vue";
const state={
    token: getStorage('token'),
    user:getStorage('user'),
}
const mutations={
	SET_TOKEN(state,token){
        if(token===null){
            removeStorage('token');
        }else{
            setStorage('token',token,259200)
        }
        state.token=token;
    },
    SET_USER(state,user){
        if(user===null){
            removeStorage('user');
        }else{
            setStorage('user',user,259200)
        }
        state.user=user
		uni.$emit('updateUser',user);
    },
}
const actions={
	getWxLoginCode({commit},code){
		return new Promise((resolve, reject) => {
		    loginApi({code}).then((res)=>{
				commit('SET_TOKEN',res.token);
				if(res.user){
					commit('SET_USER',res.user);
				}
		        resolve();
		    }).catch(()=>{
		        reject();
		    })
		})
	},
	getUser({commit}){
		return new Promise((resolve, reject) => {
		    getUserInfo().then((res)=>{
				commit('SET_USER',res);
		        resolve();
		    }).catch(()=>{
		        reject();
		    })
		})
	}
}
export default {
    namespaced: true,
    state,
    mutations,
    actions
}
